--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.github/workflows/ci.yml aa512d3a8784605805dde94f94ac3d267d498123 (aa512d3a) Text, 7.82 KB
T8b949e# Linux CI: lint, frontend/backend tests, localization, and a Linux build check.
T8b949e#
T8b949e# The frontend bundle is produced once by the reusable Frontend build workflow
T8b949e# and downloaded by the Linux build-check job (and by the platform build/release
T8b949e# workflows) instead of being rebuilt on every job.
T8b949e#
T8b949e# Pinned first-party actions (bump tag and SHA together when upgrading):
T8b949e# actions/checkout@v6.0.1 8e8c483db84b4bee98b60c0593521ed34d9990e8
T8b949e# actions/setup-python@v6.2.0 a309ff8b426b58ec0e2a45f0f869d46889d02405
T8b949e# actions/setup-node@v6.1.0 395ad3262231945c25e8478fd5baf05154b1d79f
T8b949e# actions/upload-artifact@v5.0.0 330a01c490aca151604b8cf639adc76d48f6c5d4
T8b949e# actions/download-artifact@v5.0.0 634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72nameTb4b4b4: Ta5d6ffCI
Tff7b72onTb4b4b4:
Tff7b72pushTb4b4b4:
Tff7b72branchesTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff**Ta5d6ff"
Tff7b72pull_requestTb4b4b4:
Tff7b72branchesTb4b4b4:
Tb4b4b4- Ta5d6ffmaster
Tb4b4b4- Ta5d6ffdev
Tff7b72workflow_dispatchTb4b4b4:
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72concurrencyTb4b4b4:
Tff7b72groupTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.workflowTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.refTa5d6ff Ta5d6ff}}
Tff7b72cancel-in-progressTb4b4b4: Ta5d6fftrue
Tff7b72envTb4b4b4:
Tff7b72FORCE_JAVASCRIPT_ACTIONS_TO_NODE24Tb4b4b4: Ta5d6fftrue
Tff7b72NODE_OPTIONSTb4b4b4: Ta5d6ff--max-old-space-size=8192
Tff7b72PYTHON_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff3.14Ta5d6ff"
Tff7b72NODE_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff24Ta5d6ff"
Tff7b72POETRY_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff2.3.4Ta5d6ff"
Tff7b72PNPM_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff10.32.1Ta5d6ff"
Tff7b72jobsTb4b4b4:
Tff7b72frontendTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifact
Tff7b72usesTb4b4b4: Ta5d6ff./.github/workflows/frontend-build.yml
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72withTb4b4b4:
Tff7b72artifact_nameTb4b4b4: Ta5d6ffmeshchatx-frontend-ci-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_attemptTa5d6ff Ta5d6ff}}
Tff7b72retention_daysTb4b4b4: Ta5d6ff1
Tff7b72verifyTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffmatrix.task.nameTa5d6ff Ta5d6ff}}
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffmatrix.task.timeoutTa5d6ff Ta5d6ff}}
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72strategyTb4b4b4:
Tff7b72fail-fastTb4b4b4: Ta5d6fffalse
Tff7b72matrixTb4b4b4:
Tff7b72taskTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffLint
Tff7b72idTb4b4b4: Ta5d6fflint
Tff7b72timeoutTb4b4b4: Ta5d6ff35
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffFrontendTa5d6ff Ta5d6fftests
Tff7b72idTb4b4b4: Ta5d6fffrontend-tests
Tff7b72timeoutTb4b4b4: Ta5d6ff45
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBackendTa5d6ff Ta5d6fftests
Tff7b72idTb4b4b4: Ta5d6ffbackend-tests
Tff7b72timeoutTb4b4b4: Ta5d6ff120
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffLocalizationTa5d6ff Ta5d6fftests
Tff7b72idTb4b4b4: Ta5d6fflang-tests
Tff7b72timeoutTb4b4b4: Ta5d6ff20
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffPython
Tff7b72usesTb4b4b4: Ta5d6ffactions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
Tff7b72withTb4b4b4:
Tff7b72python-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PYTHON_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffPoetryTa5d6ff Ta5d6ff(PyPITa5d6ff Ta5d6ffpin)
Tff7b72envTb4b4b4:
Tff7b72POETRY_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.POETRY_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-poetry.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffNode
Tff7b72usesTb4b4b4: Ta5d6ffactions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f
Tff7b72withTb4b4b4:
Tff7b72node-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.NODE_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffEnableTa5d6ff Ta5d6ffpnpmTa5d6ff Ta5d6ff(corepack)
Tff7b72runTb4b4b4: Ta5d6ffcorepackTa5d6ff Ta5d6ffenableTa5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffcorepackTa5d6ff Ta5d6ffprepareTa5d6ff Ta5d6ff"pnpm@${PNPM_VERSION}"Ta5d6ff Ta5d6ff--activate
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffdependencies
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-deps.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffmatrixTa5d6ff Ta5d6fftask
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72case "${{ matrix.task.id }}" in
Tff7b72lint)
Tff7b72pnpm run lint
Tff7b72poetry run ruff check .
Tff7b72poetry run ruff format --check .
Tff7b72;;
Tff7b72frontend-tests)
Tff7b72pnpm exec vitest run --exclude tests/frontend/LoadTimePerformance.test.js --exclude tests/frontend/i18n.test.js
Tff7b72pnpm exec vitest run --config vitest.electron.config.js
Tff7b72;;
Tff7b72backend-tests)
Tff7b72poetry run python -m pytest tests/backend -n auto \
Tff7b72--cov=meshchatx/src/backend
Tff7b72;;
Tff7b72lang-tests)
Tff7b72pnpm exec vitest run tests/frontend/i18n.test.js
Tff7b72poetry run python -m pytest tests/backend/test_translator_handler.py
Tff7b72;;
Tff7b72*)
Tff7b72echo "Unknown matrix task: ${{ matrix.task.id }}" >&2
Tff7b72exit 1
Tff7b72;;
Tff7b72esac
Tff7b72build-checkTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffLinuxTa5d6ff Ta5d6ffbuildTa5d6ff Ta5d6ffcheck
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72needsTb4b4b4: Ta5d6fffrontend
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff60
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72envTb4b4b4:
Tff7b72FRONTEND_ARTIFACT_NAMETb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.frontend.outputs.artifact_nameTa5d6ff Ta5d6ff}}
Tff7b72MESHCHATX_FRONTEND_PREBUILTTb4b4b4: Ta5d6ff"Ta5d6ff1Ta5d6ff"
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffPython
Tff7b72usesTb4b4b4: Ta5d6ffactions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
Tff7b72withTb4b4b4:
Tff7b72python-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PYTHON_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffPoetryTa5d6ff Ta5d6ff(PyPITa5d6ff Ta5d6ffpin)
Tff7b72envTb4b4b4:
Tff7b72POETRY_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.POETRY_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-poetry.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffNode
Tff7b72usesTb4b4b4: Ta5d6ffactions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f
Tff7b72withTb4b4b4:
Tff7b72node-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.NODE_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffEnableTa5d6ff Ta5d6ffpnpmTa5d6ff Ta5d6ff(corepack)
Tff7b72runTb4b4b4: Ta5d6ffcorepackTa5d6ff Ta5d6ffenableTa5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffcorepackTa5d6ff Ta5d6ffprepareTa5d6ff Ta5d6ff"pnpm@${PNPM_VERSION}"Ta5d6ff Ta5d6ff--activate
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffdependencies
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-deps.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifact
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.FRONTEND_ARTIFACT_NAMETa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffmeshchatx/public
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffVerifyTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifactTa5d6ff Ta5d6ffcontents
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72test -f meshchatx/public/index.html
Tff7b72test -d meshchatx/public/assets
Tff7b72test -d meshchatx/public/reticulum-docs-bundled/current
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCompileTa5d6ff Ta5d6ffbackendTa5d6ff Ta5d6ffsources
Tff7b72runTb4b4b4: Ta5d6ffpoetryTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffpythonTa5d6ff Ta5d6ff-mTa5d6ff Ta5d6ffcompileallTa5d6ff Ta5d6ffmeshchatx/
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffbackendTa5d6ff Ta5d6ff(cx_Freeze)
Tff7b72runTb4b4b4: Ta5d6ffpnpmTa5d6ff Ta5d6ffrunTa5d6ff Ta5d6ffbuild-backend
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffbuild-checkTa5d6ff Ta5d6ffartifacts
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-build-check-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Tb4b4b4|
Tff7b72meshchatx/public/
Tff7b72build/exe/
Tff7b72if-no-files-foundTb4b4b4: Ta5d6ffwarn
Tff7b72validate-build-artifactTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffValidateTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffbuildTa5d6ff Ta5d6ffartifact
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff15
Tff7b72needsTb4b4b4: Ta5d6ffbuild-check
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffbuild-checkTa5d6ff Ta5d6ffartifact
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72patternTb4b4b4: Ta5d6ffmeshchatx-linux-build-check-*-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ff.artifacts/linux-build-check
Tff7b72merge-multipleTb4b4b4: Ta5d6fftrue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffValidateTa5d6ff Ta5d6ffartifactTa5d6ff Ta5d6ffcontents
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72test -d ".artifacts/linux-build-check/meshchatx/public"
Tff7b72test -d ".artifacts/linux-build-check/build/exe"
Tff7b72test -n "$(ls -A .artifacts/linux-build-check/meshchatx/public)"
Tff7b72test -n "$(ls -A .artifacts/linux-build-check/build/exe)"
Tff7b72echo "Linux build artifact download + content validation passed."
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────